// Token 管理工具
export const TokenManager = {
  // 保存 token
  setToken(token: string) {
    try {
      // 始终保存到 Storage，用于页面缓存
      uni.setStorageSync('token', token);
      
      // #ifdef APP-PLUS
      if (uni.getSystemInfoSync().platform === 'ios') {
        // iOS 额外保存到 Keychain
        const keychain = plus.ios.importClass("KeychainItemWrapper");
        const wrapper = new keychain("com.maiwei.airlines.keychain", null);
        wrapper.setObject(token, "token");
        wrapper.release();
        
        // 添加日志
        console.log('Token saved to Keychain:', token);
      }
      // #endif
    } catch (e) {
      console.error('Token storage error:', e);
    }
  },

  // 获取 token
  getToken(): string {
    try {
      let token = '';
      
      // #ifdef APP-PLUS
      if (uni.getSystemInfoSync().platform === 'ios') {
        try {
          // 优先从 Keychain 获取
          const keychain = plus.ios.importClass("KeychainItemWrapper");
          const wrapper = new keychain("com.maiwei.airlines.keychain", null);
          token = wrapper.objectForKey("token");
          wrapper.release();
          
          // 添加日志
          console.log('Token retrieved from Keychain:', token);
          
          // 如果 Keychain 中没有，尝试从 Storage 获取
          if (!token) {
            token = uni.getStorageSync('token') || '';
            console.log('Token retrieved from Storage:', token);
            
            // 如果 Storage 中有，同步到 Keychain
            if (token) {
              const wrapper = new keychain("com.maiwei.airlines.keychain", null);
              wrapper.setObject(token, "token");
              wrapper.release();
              console.log('Token synced to Keychain from Storage');
            }
          }
        } catch (keychainError) {
          console.error('Keychain error:', keychainError);
          // Keychain 错误时回退到 Storage
          token = uni.getStorageSync('token') || '';
        }
      } else {
        token = uni.getStorageSync('token') || '';
      }
      // #endif
      
      // #ifndef APP-PLUS
      token = uni.getStorageSync('token') || '';
      // #endif
      
      return token;
    } catch (e) {
      console.error('Token retrieval error:', e);
      // 出错时尝试从 Storage 获取
      return uni.getStorageSync('token') || '';
    }
  },

  // 删除 token
  removeToken() {
    try {
      // 删除 Storage 中的 token
      uni.removeStorageSync('token');
      
      // #ifdef APP-PLUS
      if (uni.getSystemInfoSync().platform === 'ios') {
        try {
          // 删除 Keychain 中的 token
          const keychain = plus.ios.importClass("KeychainItemWrapper");
          const wrapper = new keychain("com.maiwei.airlines.keychain", null);
          wrapper.resetKeychainItem();
          wrapper.release();
          console.log('Token removed from Keychain');
        } catch (keychainError) {
          console.error('Keychain removal error:', keychainError);
        }
      }
      // #endif
    } catch (e) {
      console.error('Token removal error:', e);
    }
  },

  // 检查是否有 token
  hasToken(): boolean {
    return !!this.getToken();
  }
} 